struct VertexShaderInput
{
    float4 Position : POSITION0;
};

struct VertexShaderOutput
{
    float4 Position : POSITION0;
};

struct PixelShaderOutput
{
    float4 Colour : COLOR0;
    float4 Normal : COLOR1;
    float4 Depth : COLOR2;
};

VertexShaderOutput VertexShaderFunction(VertexShaderInput input)
{
    VertexShaderOutput output;

    output.Position = float4(input.Position);

    return output;
}

PixelShaderOutput PixelShaderFunction(VertexShaderOutput input)
{
    PixelShaderOutput output;

    //output the colour black to the colour rendertarget, to reset it to black
    //specular intensity also set to zero
    output.Colour = 0.0f;
    output.Colour.a = 0.0f;

    //this is set to grey, but once transformed from [0,1] domain to [-1,1], it will become 0.0f
    output.Normal.rgb = 0.5f;

    //specular power set to zero
    output.Normal.a = 0.0f;

    //setting the depth output to maximum
    output.Depth = 1.0f;

    return output;
}

technique Technique1
{
    pass Pass1
    {
        VertexShader = compile vs_2_0 VertexShaderFunction();
        PixelShader = compile ps_2_0 PixelShaderFunction();
    }
}
